package com.project.model.core;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.project.model.common.OrderEntity;

import java.util.ArrayList;
import java.util.List;

/**
 * 菜单资源表
 *
 * @version 1.0 2016-04-21
 */
public class Menu extends OrderEntity {

    private static final long serialVersionUID = 1303169019062370353L;

    /**
     * 名称
     */
    private String name;

    /**
     * 上级菜单
     */
    private Long parentId;

    /**
     * 备注
     */
    private String remark;

    /**
     * 链接地址
     */
    private String url;

    /**
     * 菜单类型
     */
    private Integer type;

    /**
     * 大型图标
     */
    private String large;

    /**
     * 中型图标
     */
    private String medium;

    /**
     * 中型背景图片
     */
    private String mediumBg;

    /**
     * 小型图标
     */
    private String thumbnail;

    /**************** 非数据库字段属性 *******************/
    /**
     * 子节点集合
     */
    private List<Menu> childrens = new ArrayList<Menu>();

    /**
     * 子节点数量
     */
    private int childCount = 0;

    /**
     * 是否为父节点
     */
    private Boolean isParent;

    /**
     * 父节点名称
     */
    private String parentName;

    /**
     * 获取名称
     */
    @JsonProperty
    public String getName() {
        return name;
    }

    /**
     * 设置名称
     */
    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    /**
     * 获取上级菜单
     */
    @JsonProperty
    public Long getParentId() {
        return parentId;
    }

    /**
     * 设置上级菜单
     */
    public void setParentId(Long parentId) {
        this.parentId = parentId;
    }

    /**
     * 获取备注
     */
    @JsonProperty
    public String getRemark() {
        return remark;
    }

    /**
     * 设置备注
     */
    public void setRemark(String remark) {
        this.remark = remark == null ? null : remark.trim();
    }

    /**
     * 获取链接地址
     */
    @JsonProperty
    public String getUrl() {
        return url;
    }

    /**
     * 设置链接地址
     */
    public void setUrl(String url) {
        this.url = url == null ? null : url.trim();
    }

    /**
     * 获取菜单类型
     */
    @JsonProperty
    public Integer getType() {
        return type;
    }

    /**
     * 设置菜单类型
     */
    public void setType(Integer type) {
        this.type = type;
    }

    /**
     * 获取大型图标
     */
    @JsonProperty
    public String getLarge() {
        return large;
    }

    /**
     * 设置大型图标
     */
    public void setLarge(String large) {
        this.large = large == null ? null : large.trim();
    }

    /**
     * 获取中型图标
     */
    @JsonProperty
    public String getMedium() {
        return medium;
    }

    /**
     * 设置中型图标
     */
    public void setMedium(String medium) {
        this.medium = medium == null ? null : medium.trim();
    }

    /**
     * 获取小型图标
     */
    @JsonProperty
    public String getThumbnail() {
        return thumbnail;
    }

    /**
     * 设置小型图标
     */
    public void setThumbnail(String thumbnail) {
        this.thumbnail = thumbnail == null ? null : thumbnail.trim();
    }

    /**
     * 设置中型背景图片
     */
    @JsonProperty
    public String getMediumBg() {
        return mediumBg;
    }

    public void setMediumBg(String mediumBg) {
        this.mediumBg = mediumBg;
    }

    public List<Menu> getChildrens() {
        return childrens;
    }

    public void setChildrens(List<Menu> childrens) {
        this.childrens = childrens;
    }

    public int getChildCount() {
        return childCount;
    }

    public void setChildCount(int childCount) {
        this.childCount = childCount;
    }

    @JsonProperty
    public Boolean getIsParent() {
        return isParent == null ? childCount > 0 : isParent;
    }

    public void setIsParent(Boolean isParent) {
        this.isParent = isParent;
    }

    @JsonProperty
    public String getParentName() {
        return parentName;
    }

    public void setParentName(String parentName) {
        this.parentName = parentName;
    }
}